export default app => {
  const { STRING, INTEGER, DATE, DataTypes, TEXT } = app.Sequelize;

  const patent = app.model.define('patent', {
    id: { type: INTEGER, primaryKey: true, autoIncrement: true },
    uuid: { type: STRING(36), unique: true },
    name: STRING(50), // 名称
    description: TEXT, // 成果介绍
    conversionMethod: STRING, // '转化方式（可选：产权买断）
    type: STRING, // 专利类型（可选：发明、实用新型、外观设计 ）
    conversionType: STRING, // 转化状态（可选：待转化/已转化）'
    technicalAdvantages: TEXT, // 技术优势
    updateTime: DATE, // 更新日期
    applicationNumber: STRING, // 申请专利号
    publicNumber: STRING, // 公开（公告）号
    applicationTime: DATE, // 申请日
    applicationOrganization: STRING, // 申请人（string类型，每个公司中间用;分割）
    talentsString: STRING, // 人才库外的人才（string类型，每个人才中间用;分割）
    address: STRING(255), // 专利地址（用户输入）
    legalStatus: STRING, // 法律状态（可选：公开/授权...）
    fk_applicationArea: {
      type: DataTypes.STRING(36),
    }, // 应用领域
    filler: {
      type: DataTypes.STRING(36),
    }, // 填写人
    createdAt: DATE,
    updatedAt: DATE,
  });

  patent.associate = () => {
    app.model.Patent.belongsToMany(app.model.Talent, {
      through: app.model.MergePatentTalent,
      foreignKey: 'patent_id',
      otherKey: 'talent_id',
    });
    app.model.Patent.belongsToMany(app.model.ApplicationOrganization, {
      through: app.model.MergePatentApplicationOrganization,
      foreignKey: 'patent_id',
      otherKey: 'application_organization_id',
    });
    app.model.Patent.belongsToMany(app.model.Product, {
      through: app.model.MergeProductPatent,
      foreignKey: 'patent_id',
      otherKey: 'product_id',
    });
    app.model.Patent.belongsTo(app.model.ApplicationArea, {
      foreignKey: 'fk_applicationArea',
      targetKey: 'uuid',
    });
  };
  return patent;
};
